package cn.tedu.m1;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1.创建连接工厂,并设置连接信息
        ConnectionFactory f1 = new ConnectionFactory();
        f1.setHost("192.168.64.140");
        f1.setPort(5672);
        f1.setUsername("admin");
        f1.setPassword("admin");
        Connection con = f1.newConnection(); //连接
        Channel c = con.createChannel(); //通信的通道

        //2.创建helloworld-XQ队列
        c.queueDeclare("helloworld-XQ", false, false, false, null);

        //创建回调对象
        DeliverCallback deliverCallback = new DeliverCallback() {
            @Override
            public void handle(String consumerTag, Delivery message) throws IOException {
                byte[] body = message.getBody();
                String s =  new String(body);
                System.out.println("收到："+s);
            }
        };

        CancelCallback cancelCallback = new CancelCallback() {
            @Override
            public void handle(String consumerTag) throws IOException {

            }
        };


        //从队列接收消息，传递给回调对象进行处理。
        /*basicConsume方法参数说明：autoAck 自动确认；消息回执，如果消费者处理完消息，可以向服务器发送回执进行确认。
            autoAck=true   --- 服务器自动确认，不等待消费者发回回执
            autoAck=false  --- 要求消费者手动发送回执进行确认
        */
        c.basicConsume("helloworld-XQ", true,deliverCallback,cancelCallback);
    }
}